<?php
class Solicitudes_DetalleautoevaluacionController extends Zend_Controller_Action
{
	private $nav;
	private $codproceso;
	private $datosproceso;
	private $codestado;
	private $datos_comite;
	private $tab;
	private $codseccionlista;
	private $infoLista;
	private $tramitelista;
	
	private $_readonly;
	private $boton1_metodologia;
	private $boton2_metodologia;
	private $boton3_metodologia;
	private $boton4_metodologia;
	private $boton5_metodologia;
	private $datos_plan;
	
    public function init() {
        $sesionListas = new Zend_Session_Namespace("LISTAS");
        $this->codproceso = $sesionListas->infoLista["codproceso"];
        $this->infoLista  = $sesionListas->infoLista;
        
		$Proceso = new Solicitudes_Model_DetalleSolicitud();
        $this->datosproceso = $Proceso->cargardatosProceso($this->codproceso);
        
        $Programa = new Programas_Model_Programas();
		$this->view->infoPrograma = $Programa->getProgramas(array("codprograma"=>$this->datosproceso["codprograma"]));
		$this->view->infoPrograma[0]["codproceso"] = $this->codproceso;
    	
    	$this->nav = new App_Util_Navegacion();
		$this->nav->agregar_navegacion("Lista de solicitudes", "/solicitudes/index/lista","Lista de solicitudes");
//        $this->nav->agregar_navegacion("Datos del comit&eacute; de autoevaluaci&oacute;n","/solicitudes/autoevaluacion","Datos del comit&eacute;");
		$this->nav->agregar_navegacion("Información del programa","","");
		$this->view->nav = $this->nav;
		
    	$codsede = App_User::getCodigoSede();
		
		if (empty($codsede)){
		    $datos_solicitud = $Proceso->getDatosSolicitud($this->datosproceso["codsolicitud"]);
		    $codsede = $datos_solicitud["codsede"];
		}
		
		$autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
		$this->datos_comite = $autoevaluacion->getComiteIES($codsede);
		
        $this->tab = $this->_getParam("tab");
		
		$this->tabs = new App_Util_Tabs ( );
		
		$vertab2 = false;
		$vertab3 = false;
		$vertab4 = false;
		$vertab5 = false;
		
		if (isset($this->datos_comite["codcomite"]) && (($this->datos_comite["tipo"]==2)||($this->datos_comite["tipo"]==4))){
		    $params1=App_Util_SafeUrl::encriptar(array("tab"=>1),true);
		    $this->tabs->agregar_vista ("Comité del programa","/solicitudes/detalleautoevaluacion/index/{$params1}" );
		    $this->tab = (empty($this->tab))?1:$this->tab;
		    if ($autoevaluacion->getCountMiembros($this->datosproceso["codprograma"],"P")){
		        $vertab2 = true;
		        $this->tabs->checkear("Comité del programa");
		    }
		}else{
		    $vertab2 = true;
		}
		
		$this->tab = (empty($this->tab))?2:$this->tab;
		$params2=App_Util_SafeUrl::encriptar(array("tab"=>2),true);
		$params3=App_Util_SafeUrl::encriptar(array("tab"=>3),true);
//		$params4=App_Util_SafeUrl::encriptar(array("tab"=>4),true);

//        $serviceLista = new Autoevaluacion_Model_DiligenciarListas(); -->ojo
        
        $AutoevaluacionService = new Autoevaluacion_Model_DiligenciarListas();
    	$datos_diligencia["codlista"]= $this->infoLista["codlista"];
    	$datos_diligencia["codproceso"]=$this->datosproceso["codproceso"];
    	$datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
        $this->view->informacion = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia,1);
        
        $this->tramitelista = $AutoevaluacionService->getTramiteLista($this->codproceso,$this->infoLista["codlista"]);
        
        $this->view->realizarponderacion = $this->tramitelista["realizarponderacion"];
        
		if ($vertab2){
		    $this->tabs->agregar_vista ( "Información para la autoevaluación","/solicitudes/detalleautoevaluacion/index/{$params2}" );
		    if ($AutoevaluacionService->verificarInformacionAutoevaluacion($this->tramitelista["codtramitelista"])){
		        $vertab3 = true;
		        $this->tabs->checkear("Información para la autoevaluación");
		    }
		}else{
		    $this->tabs->agregar_vista ( "Información para la autoevaluación","#" );
		}
		
		$this->boton1_metodologia = false;
		$this->boton2_metodologia = false;
		$this->boton3_metodologia = false;
		$this->boton4_metodologia = false;
		$this->boton5_metodologia = false;
		
		if ($vertab3){
		    $vertab4 = true;
		    
	        $this->tabs->agregar_vista ( "Metodología","/solicitudes/detalleautoevaluacion/metodologia/{$params3}" );
	        if ($autoevaluacion->getCountObjetivos($this->codproceso)){
	            $this->boton1_metodologia = true;
	        }else{
	            $vertab4 = false;
	        }
	        
	        if (!empty($this->datosproceso["metodologiaautoevaluacion"])){
	            $this->boton2_metodologia = true;
	        }else{
	            $vertab4 = false;
	        }
	        
	        if ($autoevaluacion->getCountInstrumentos($this->codproceso) &&
	            (!empty($this->datosproceso["fuentesdocumentales"]) || !empty($this->datosproceso["fuentesnodocumentales"]))){
	            $this->boton3_metodologia = true;
	        }else{
	            $vertab4 = false;
	        }
	        
	        $escalasService = new Autoevaluacion_Model_Escalas();
	        
	        if ($this->tramitelista["realizarponderacion"]=="N"){
	            if ($escalasService->getCountEscalasGradacionProceso($this->infoLista["codlista"], $this->codproceso) && !empty($this->datosproceso["sintesisgradacion"])){
    	            $this->boton4_metodologia = true;
    	        }else{
    	            $vertab4 = false;
    	        }
	        }else{
    			if ($escalasService->getCountEscalasGradacionProceso($this->infoLista["codlista"], $this->codproceso) &&
    	            !empty($this->datosproceso["sintesisponderacion"]) && !empty($this->datosproceso["sintesisgradacion"])){
    	            $this->boton4_metodologia = true;
    	        }else{
    	            $vertab4 = false;
    	        }
    	        
	        //  $AutoevaluacionService = new Autoevaluacion_Model_DiligenciarListas();
    	        if ($AutoevaluacionService->verificarPonderacion($this->tramitelista["codtramitelista"])){
    	            $this->boton5_metodologia = true;
    	        }else{
    	            $vertab4 = false;
    	        }
	        }
	        
		}else{
		    $this->tabs->agregar_vista ( "Metodología","#" );
		}
	    
	    if ($vertab4){
//	                $codseccionlista = $this->_getParam("codseccionlista");
	        
	        $this->tabs->agregar_vista ( "Valoración de factores y características","/solicitudes/detalleautoevaluacion/valoracionelemento" );
	        if ($AutoevaluacionService->verificarValoracion($this->tramitelista["codtramitelista"])) $vertab5 = true;
	        $this->tabs->checkear("Metodología");
	        
	    }else
	        $this->tabs->agregar_vista ( "Valoración de factores y características","#" );
	        
	    if ($vertab5){
	        $this->tabs->agregar_vista ( "Plan de mejoramiento","/solicitudes/detalleautoevaluacion/planmejoramiento" );
	        $this->tabs->checkear("Valoración de factores y características");
	        
	        $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
	        $this->datos_plan = $Planesmejoramiento->getPlanes(array("codproceso"=>$this->codproceso));
	        
	        if (isset($this->datos_plan[0]["codplanmejoramiento"])){
	            if ($Planesmejoramiento->getActividadesPlan($this->datos_plan[0]["codplanmejoramiento"])){
	                $this->tabs->checkear("Plan de mejoramiento");
	            }
	        }
	    }else{
	        $this->tabs->agregar_vista ( "Plan de mejoramiento","#" );
	    }
		$this->view->tabs = $this->tabs;
		
		//Resumen Informacion del programa (va en todos los actions)
		//$this->instituciones = new Instituciones_Model_Instituciones();
		//$infoinstitucion= $this->instituciones->cargardatosInfo($codsede);
		//$this->view->infoInstitucion=$infoinstitucion;
		
//        $this->_readonly = false;
//		if ($this->codestado != Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION) {
//			$this->_readonly = true;
//			$this->_helper->layout()->setLayout("popup");
//			$this->codestado = Solicitudes_Model_Historicoprocesos::EN_AUTOEVALUACION;
//		}
    }

    public function indexAction() {

        switch($this->tab){
           case "1":
                $this->tabs->actual("Comité del programa");
		        $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
		        $form2 = new Solicitudes_Form_Miembros();
		        $form2->recoverFromRedirect();
		        $codmiembro = $this->_getParam("codmiembro");
		        if(!empty($codmiembro)){
		            $form2->populate ($autoevaluacion->getMiembro($codmiembro));
		        }
		        $this->view->miembros = $autoevaluacion->getMiembros($this->datosproceso["codprograma"],"P");
		        $form2->makeStatic($this->_readonly);
		        $this->view->form2 = $form2;
           break;
           case "2":
                $this->tabs->actual( "Información para la autoevaluación" );
    	        $form = new Solicitudes_Form_Informacion();
    	        $form->recoverFromRedirect();
    	        if ($this->infoLista){
    	            $AutoevaluacionService = new Autoevaluacion_Model_DiligenciarListas();
	    	        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
	    	        $datos_diligencia["codproceso"]=$this->datosproceso["codproceso"];
	    	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	    	        
	                $this->view->informacion = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia,1);
	                $codseccionlista = $this->_getParam("codseccionlista");

	                if (empty($codseccionlista)){
	                    $datos = $this->view->informacion[0];
	                    $this->view->key = 0;
	                }else{
	                    foreach ($this->view->informacion as $key => $value){
	                        if ($value["codseccionlista"]==$codseccionlista) {
	                            $datos = $this->view->informacion[$key];
	                            $this->view->key = $key;
	                        }
	                    }
	                }
	               if(strtolower($datos["nombre"])=="profesoresxx"){
                       $Proceso = new Solicitudes_Model_DetalleSolicitud();

		               $datos_docentes = $Proceso->buscarDocentes($this->codproceso,$this->codestado);
		               if ($datos_docentes){
		                   $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
		                   $datos_docentes["periodo"]= $datos_docentes["periodo_1_1"];
		
		
			               if ($datos_docentes["ano_1_1"]==$datos_docentes["ano_1_2"]){
				               $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
				               $datos_docentes["periodo"]= $datos_docentes["periodo_1_2"];
			               }
		               }
 					   
		               $errordocentes = $this->_getParam("errordocentes");
		               $datos_docentes["codseccionlista"] = $codseccionlista;
		               $form_docentes = new Solicitudes_Form_Docentes();
		               if ($errordocentes){
		                   $form_docentes->recoverFromRedirect();
		               }
		               $form_docentes->populate ( $datos_docentes );
		               $form_docentes->makeStatic($this->_readonly);
		               $this->view->form_docentes=$form_docentes;
                        
                        
                        $this->view->docentesins = $Proceso->buscarDocentesVisita($this->codproceso,$this->codestado,"IN");
//                        $this->view->docentesvis = $Proceso->buscarDocentesVisita($this->codproceso,$this->codestado,"VI");
	                }
	               if(strtolower($datos["nombre"])=="visibilidad nacional e internacionalxx"){
                       $Proceso = new Solicitudes_Model_DetalleSolicitud();

		               $errordocentes = $this->_getParam("errordocentes");
		               $datos_docentes["codseccionlista"] = $codseccionlista;
		               $form_docentes = new Solicitudes_Form_Docentes();
		               if ($errordocentes){
		                   $form_docentes->recoverFromRedirect();
		               }
		               $form_docentes->populate ( $datos_docentes );
		               $form_docentes->makeStatic($this->_readonly);
		               $this->view->form_docentes=$form_docentes;
                        
                        
//                        $this->view->docentesins = $Proceso->buscarDocentesVisita($this->codproceso,$this->codestado,"IN");
                        $this->view->docentesvis = $Proceso->buscarDocentesVisita($this->codproceso,$this->codestado,"VI");
	                }
                    if(strtolower($datos["nombre"])=="estudiantesxx"){
                       $Proceso = new Solicitudes_Model_DetalleSolicitud();
                       $datos_estudiantes = $Proceso->buscarEstudiantes($this->codproceso,$this->codestado);
                       
                       $datos_estudiantes["codseccionlista"] = $codseccionlista;
		               $datos_estudiantes["ano"]= $datos_estudiantes["ano_1_1"];
		               $datos_estudiantes["periodo"]= $datos_estudiantes["periodo_1_1"];
		               
		               if ($datos_estudiantes["ano_1_1"]==$datos_estudiantes["ano_1_2"]){
			               $datos_estudiantes["ano"]= $datos_estudiantes["ano_1_1"];
			               $datos_estudiantes["periodo"]= $datos_estudiantes["periodo_1_2"];
		               }
		               $form_estudiantes = new Solicitudes_Form_Estudiantesauto();
		               $form_estudiantes->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardarestudiantes"));
		               
//                       $errorestudiantes = $this->_getParam("errorestudiantes");
//		               if ($errorestudiantes){
		                   $form_estudiantes->recoverFromRedirect();
//		               }
		               $form_estudiantes->populate ( $datos_estudiantes );
		               $form_estudiantes->makeStatic($this->_readonly);
		               $this->view->form_estudiantes=$form_estudiantes;
                    }
                    
                    if (strtolower($datos["nombre"])=="procesos académicosxx"){
                        
                        $this->view->eltab1 = $this->_getParam("tab1");
    	                
    	                if (empty($this->view->eltab1)){
    	                    $this->view->eltab1 = 1;
    	                }
                        
                        $this->tabs1 = new App_Util_Tabs();
                		$this->tabs1->agregar_vista("Proyectos de extension - Actividades", "/solicitudes/detalleautoevaluacion/index/".App_Util_SafeUrl::encriptar(array("tab"=>2,"tab1"=>1),true));
                		$this->tabs1->agregar_vista("Proyectos de extension - Financiaci&oacute;n", "/solicitudes/detalleautoevaluacion/index/".App_Util_SafeUrl::encriptar(array("tab"=>2,"tab1"=>2),true));
                		
                        if ($this->view->eltab1==1){
                            $this->tabs1->actual("Proyectos de extension - Actividades");
                        }else{
                            $this->tabs1->actual("Proyectos de extension - Financiaci&oacute;n");
                        }
                		
                		$this->view->tabs1 = $this->tabs1;
                		
                		$form_extensionactividades = new Solicitudes_Form_Extensionactividades();
	                    $form_extensionactividades->recoverFromRedirect();
		               
    	                $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
    	                
    	                $codactextension = $this->_getParam("codactextension");
    	                
    	                if (!empty($codactextension)){
    	                    $datos_form1 = $autoevaluacion->getActividadextension($codactextension);
    	                }

    	    	        $datos_form1["codproceso"]        = $this->codproceso;
    	                $datos_form1["codseccionlista"]   = $this->_getParam("codseccionlista");
    	                
    	                $form_extensionactividades->populate ( $datos_form1 );
                		$form_extensionactividades->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardarextensionactividades"));
                		$form_extensionactividades->makeStatic($this->_readonly);
                		
                		$this->view->form_extensionactividades = $form_extensionactividades;
                                        
                		 $this->view->actividadesextension = $autoevaluacion->getActividadesextension($this->codproceso);
                		
                		 
                		$form_extensionfinanciacion = new Solicitudes_Form_Extensionfinanciacion();
	                    $form_extensionfinanciacion->recoverFromRedirect();
		               
    	                $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
    	                
    	                $codfinextension = $this->_getParam("codfinextension");
    	                
    	                if (!empty($codfinextension)){
    	                    $datos_form2 = $autoevaluacion->getFinanciacionextension($codfinextension);
    	                }

    	    	        $datos_form2["codproceso"]        = $this->codproceso;
    	                $datos_form2["codseccionlista"]   = $this->_getParam("codseccionlista");
    	                
    	                $form_extensionfinanciacion->populate ( $datos_form2 );
                		$form_extensionfinanciacion->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardarextensionfinanciacion"));
                		$form_extensionfinanciacion->makeStatic($this->_readonly);
                		
                		$this->view->form_extensionfinanciacion = $form_extensionfinanciacion;
                                        
                		 $this->view->financiacionesextension = $autoevaluacion->getFinanciacionesextension($this->codproceso);
                		
                    }
                    if (strtolower($datos["nombre"])=="investigación y creación artística y culturalxxx"){
                        $this->view->eltab2 = $this->_getParam("tab2");
    	                
    	                if (empty($this->view->eltab2)){
    	                    $this->view->eltab2 = 1;
    	                }
                        
                        $this->tabs2 = new App_Util_Tabs();
                		$this->tabs2->agregar_vista("Grupos de investigaci&oacute;n", "/solicitudes/detalleautoevaluacion/index/".App_Util_SafeUrl::encriptar(array("tab"=>2,"tab1"=>1),true));
                		$this->tabs2->agregar_vista("Proyectos de investigaci&oacute;n", "/solicitudes/detalleautoevaluacion/index/".App_Util_SafeUrl::encriptar(array("tab"=>2,"tab1"=>2),true));

                        if ($this->view->eltab2==1){
                            $this->tabs2->actual("Grupos de investigaci&oacute;n");
                        }else{
                            $this->tabs2->actual("Proyectos de investigaci&oacute;n");
                        }
                		
                		$this->view->tabs2 = $this->tabs2;
                		
                		 $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
                		 $this->view->gruposinvestigacion = $autoevaluacion->getGruposinvestigacion($this->codproceso);
                		 $proyectosgrupos = $autoevaluacion->getProyectosgruposinvestigacion($this->codproceso);
                		 $this->view->proyectosgrupos = $autoevaluacion->asignarPublicacionesproyectos($proyectosgrupos);
//                         Zend_Debug::dump($this->view->proyectosgrupos);
                    }
                    
	                $form->populate($datos);
	                $this->view->adjuntos = $AutoevaluacionService->getAdjuntosSeccion($datos["codtramiteseccion"]);
    	        }
    	        
    	        $form->makeStatic($this->_readonly);
                $this->view->form = $form;
		        $this->render("informacion");
           break;
        }
    }
    
	public function guardarmiembroAction(){
        $form = new Solicitudes_Form_Miembros();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
				$datos = $this->getRequest()->getPost();
				$datos["codprograma"] = $this->datosproceso["codprograma"];
				$autoevaluacion->guardarMiembro($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
//            foreach ($form->getMessages() as $key => $value) {
//            	$this->view->priorityMessenger("{$form->getElement($key)->getLabel()} ".array_shift($value), "error");
//            }
        }
        $this->_helper->redirector("index");
    }

     public function eliminarmiembroAction(){
  	      try {
			  $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
			  $autoevaluacion->eliminarMiembro($this->_getParam("codmiembro"));
			  $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		$this->_helper->redirector("index");
	}
	
    public function guardarsintesisAction() {
        $form = new Solicitudes_Form_Informacion();
        $codseccionlista = $this->_getParam("codseccionlista");
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
//                $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
                $autoevaluacion = new Autoevaluacion_Model_DiligenciarListas();
                $datos = $this->getRequest()->getPost();
                $datos["codusuario"] = App_User::getCodigoUsuario();
                $autoevaluacion->guardarTramiteSeccion ($datos);
                
                $datos_adj = $form->archivo->getFileInfo();
                if (!empty($datos_adj["archivo"]["name"])){
	                $ext = pathinfo($datos_adj["archivo"]["name"], PATHINFO_EXTENSION);
	                $nuevo_nombre = md5(uniqid() . $datos_adj["archivo"]["name"]) . "." . $ext;
	                $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
	                if($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
	                    $datos_archivo["nombrereal"] = $datos_adj["archivo"]["name"];
	                    $datos_archivo["tipomime"] = $datos_adj["archivo"]["type"];
	                    $datos_archivo["tamano"] = $datos_adj["archivo"]["size"];
	                    $datos_archivo["nombrecodificado"] = $nuevo_nombre;
	                    $datos_archivo["codusuario"] = App_User::getCodigoUsuario();
	                    $datos_archivo["codtramiteseccion"] = $datos["codtramiteseccion"];
	
	                    $autoevaluacion->guardarAdjuntoSeccion($datos_archivo);
	                }
                }
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $parametros["codseccionlista"]= $codseccionlista;
        $parametros["tab"]= 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
    
    public function eliminaradjuntoAction(){
  	      try {
			  $autoevaluacion = new Autoevaluacion_Model_DiligenciarListas();
			  $autoevaluacion->eliminarAdjuntoSeccion($this->_getParam("coddocumento"));
			  $this->view->priorityMessenger("El archivo se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $parametros["codseccionlista"]= $this->_getParam("codseccionlista");
		  $parametros["tab"]= 2;
		  $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function metodologiaAction() {
		$this->tabs->actual("Metodología");
		
		$opcion = $this->_getParam("opcion");
		$opcion = (empty($opcion))?1:$opcion;
		
		$sesionTabBoton = new Zend_Session_Namespace("TABBOTON");
		$sesionTabBoton->unsetAll();
		
		$this->view->botonesHorizontales = new App_Util_Botones() ;

		$params=App_Util_SafeUrl::encriptar(array("opcion"=>1),true);
		$this->view->botonesHorizontales->agregar("Objetivos","/solicitudes/detalleautoevaluacion/metodologia/",$params);
		
		if ($this->boton1_metodologia){
		    $this->view->botonesHorizontales->checkear("Objetivos");
			$params=App_Util_SafeUrl::encriptar(array("opcion"=>2),true);
			$this->view->botonesHorizontales->agregar("Descripción metodología","/solicitudes/detalleautoevaluacion/metodologia/",$params);
		}else{
			$this->view->botonesHorizontales->agregar("Descripción metodología","#");
		}
		
		if ($this->boton2_metodologia){
		    $this->view->botonesHorizontales->checkear("Descripción metodología");
			$params=App_Util_SafeUrl::encriptar(array("opcion"=>3),true);
			$this->view->botonesHorizontales->agregar("Instrumentos y fuentes","/solicitudes/detalleautoevaluacion/metodologia/",$params);
		}else{
			$this->view->botonesHorizontales->agregar("Instrumentos y fuentes","#");
		}
		
		if ($this->boton3_metodologia){
			$this->view->botonesHorizontales->checkear("Instrumentos y fuentes");
			$params=App_Util_SafeUrl::encriptar(array("opcion"=>4),true);
			$this->view->botonesHorizontales->agregar("Métodos de ponderación y gradación","/solicitudes/detalleautoevaluacion/metodologia/",$params);
		}else{
			$this->view->botonesHorizontales->agregar("Métodos de ponderación y gradación","#");
		}
		
	    if ($this->boton4_metodologia){
		    $this->view->botonesHorizontales->checkear("Métodos de ponderación y gradación");
	    	$params=App_Util_SafeUrl::encriptar(array("opcion"=>5),true);
	    	$this->view->botonesHorizontales->agregar("Ponderación","/solicitudes/detalleautoevaluacion/metodologia/",$params);
		}else{
			$this->view->botonesHorizontales->agregar("Ponderación","#");
		}
		
		
//		if ($this->tramitelista["realizarponderacion"]=="S"){
    	    if ($this->boton5_metodologia){
    		    $this->view->botonesHorizontales->checkear("Ponderación");
    		}
//		}
		
        switch($opcion){
            case "1":
                $this->view->botonesHorizontales->actual("Objetivos");
				$form = new Solicitudes_Form_ObjetivoAutoevaluacion();
				$form->recoverFromRedirect();
				$objetivos = new Solicitudes_Model_DetalleAutoevaluacion();
				$codobjetivo = $this->_getParam("codobjetivo");
				if(!empty($codobjetivo)){
					$form->getElement("btnSubmit")->setLabel("Modificar");
					$form->populate($objetivos->getObjetivo($codobjetivo));
				}
				$form->makeStatic($this->_readonly);
				$this->view->form = $form;
				$this->view->datos = $objetivos->getObjetivos($this->codproceso);
				$this->render("objetivos");
            break;
            case "2":
                $this->view->botonesHorizontales->actual("Descripción metodología");
				$form = new Solicitudes_Form_MetodologiaAutoevaluacion();
				$form->recoverFromRedirect();
				$form->populate($this->datosproceso);
				$form->makeStatic($this->_readonly);
				$this->view->form = $form;
				$this->render("descripcion");
            break;
            case "3":
                $this->view->botonesHorizontales->actual("Instrumentos y fuentes");
				$form1 = new Solicitudes_Form_InstrumentoAutoevaluacion();
				
				$listasService = new Autoevaluacion_Model_Listas();
				foreach($listasService->getListasCompletitud() as $encuesta) {
    				$form1->getElement("codlista")->addMultiOption($encuesta["codlista"],$encuesta["nombre"]);
				}
				if ($this->_getParam("error")==1) $form1->recoverFromRedirect();
				$instrumento = new Solicitudes_Model_DetalleAutoevaluacion();
				$codinstrumento = $this->_getParam("codinstrumento");
				if(!empty($codinstrumento)){
					$form1->populate($instrumento->getInstrumento($codinstrumento));
				}
				$form1->makeStatic($this->_readonly);
				$this->view->form1 = $form1;
				$this->view->datos_instrumentos = $instrumento->getInstrumentos($this->codproceso);
				//Zend_Debug::dump($this->view->datos_instrumentos);
				
				$form2 = new Solicitudes_Form_FuentesAutoevaluacion();
				if ($this->_getParam("error")==2) $form2->recoverFromRedirect();
				$form2->populate($this->datosproceso);
				$form2->makeStatic($this->_readonly);
				$this->view->form2 = $form2;
				
				$this->render("instrumentos");
            break;
            case "4":
                $this->view->botonesHorizontales->actual("Métodos de ponderación y gradación");
                
//                $form0 = new Solicitudes_Form_Realizarponderacion();
//                $form0->populate(array("realizarponderacion"=>$this->tramitelista["realizarponderacion"],
//                                       "codtramitelista"=>$this->tramitelista["codtramitelista"]));
//				$form0->makeStatic($this->_readonly);
//                $this->view->form0 = $form0;
                
				$form1 = new Solicitudes_Form_MetodosAutoevaluacion();
				
				if ($this->tramitelista["realizarponderacion"]=="N"){
				    $form1->removeElement("texto1");
				    $form1->removeElement("sintesisponderacion");
				}
								
				if ($this->_getParam("error")==1) $form1->recoverFromRedirect();

				$form1->populate($this->datosproceso);
				$form1->makeStatic($this->_readonly);
				$this->view->form1 = $form1;
                                       
                $escalasService = new Autoevaluacion_Model_Escalas();
//                $listasService = new Autoevaluacion_Model_Listas();
                $form2 = new Solicitudes_Form_Gradacion();
                if ($this->_getParam("error")==2) $form2->recoverFromRedirect();
//                $infoListaF = $listasService->getListaActiva("F",$lalista);
                
                $codescala = $this->_getParam("codescala");
				if(!empty($codescala)){
					$form2->getElement("btnSubmit")->setLabel("Modificar");
					$form2->populate($escalasService->getEscala($codescala));
				}
                $datos_escala["codlista"]=$this->infoLista["codlista"];
                $datos_escala["codproceso"]= $this->codproceso;
                $form2->populate($datos_escala);
                $form2->makeStatic($this->_readonly);
                $this->view->form2 = $form2;
                $this->view->datos = $escalasService->getEscalasGradacionProceso($this->infoLista["codlista"], $this->codproceso);
				
				$this->render("metodos");
            break;
            case "5":
                $this->view->botonesHorizontales->actual("Ponderación");
    	        if ($this->infoLista){
    	            $AutoevaluacionService = new Autoevaluacion_Model_DiligenciarListas();
    	            
	    	        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
	    	        $datos_diligencia["codproceso"]=$this->datosproceso["codproceso"];
	    	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	    	        
	    	        $opcion = 1;
	    	        $codseccionlista = $this->_getParam("codseccionlista");
	    	        if (!empty($codseccionlista)){
	    	            $datos_diligencia["codseccionlista"]=$codseccionlista;
	    	            $opcion = 2;
	    	            $this->view->codseccionlista = $codseccionlista;
	    	        }
	                $datos_tramitelista = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	                
	                if ($opcion==1){
	                    $baseUrl = Zend_Controller_Front::getInstance ()->getBaseUrl();
	                    foreach($datos_tramitelista as $key =>$tramiteseccion){
	                        if ($AutoevaluacionService->verificarPonderacionElementosSeccion($tramiteseccion["codseccionlista"],$tramiteseccion["codtramitelista"]) &&
	                            !empty($tramiteseccion["peso"])){
	                            $datos_tramitelista[$key]["nombre"]= $tramiteseccion["nombre"]." <span class=\"glyphicon glyphicon-ok\"></span>";
   	                        }
	                    }
	                }
	                
	                $this->view->informacion = $datos_tramitelista;
	                $datos_form = $AutoevaluacionService->CargarDatosForm($this->view->informacion,"PONDERACION");
	                $datos_form["campocodigo"]= $opcion;
	                $datos_form["codseccionlista"]= $codseccionlista;
    	        }
    	        $form = new Solicitudes_Form_Diligenciarsecciones(array("elementosSeccion"=>$this->view->informacion));
    	        $form->recoverFromRedirect();
    	        $mensajes = $form->getMessages();
    	        if (count($mensajes)==0){
    	            $form->populate($datos_form);
    	        }
    	        $form->makeStatic($this->_readonly);
                $this->view->form = $form;
				$this->render("ponderacion");
			break;
        }
	}
	
	public function guardarobjetivoAction() {
	    $form = new Solicitudes_Form_ObjetivoAutoevaluacion();
	    if( $this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost()) ) {
			try {
			    $objetivos = new Solicitudes_Model_DetalleAutoevaluacion();
				$objetivos->guardarObjetivoAutoevalacion($this->codproceso, $form->getValues());
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
				$form->reset();
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
	    } else {
            $form->setStateRedirect();
        }
		$parametros["opcion"]=1;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function eliminarobjetivoAction() {
		try {
		    $objetivos = new Solicitudes_Model_DetalleAutoevaluacion();
			$objetivos->eliminarObjetivo($this->_getParam("codobjetivo"));
			$this->view->priorityMessenger("El objetivo se ha eliminado", "success");
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
		}
	    $parametros["opcion"]=1;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function objetivosordenarAction() {
		if($this->getRequest()->isPost()) {
			$orden = $this->_getParam("nuevoorden");
			if(!empty($orden)) {
				$ids = array();
				foreach (explode(",", $orden) as $value) {
					$ids[] = str_replace("ag_", "", $value);
				}
				try {
					$objetivos = new Solicitudes_Model_DetalleAutoevaluacion();
					$objetivos->guardarOrdenObjetivos($this->codproceso, $ids);
					$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
				} catch (Exception $e) {
					$this->view->priorityMessenger($e->getMessage(), "error");
				}
			}
		}
        $parametros["opcion"]=1;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}

	public function guardarmetodologiaAction() {
	    $form = new Solicitudes_Form_MetodologiaAutoevaluacion();
	    if( $this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost()) ) {
			try {
			    $procesos = new Solicitudes_Model_DetalleSolicitud();
			    $datos = $form->getValues();
			    $datos["codproceso"]=$this->codproceso;
			    $procesos->guardardatosProceso($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
				$form->reset();
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
	    } else {
            $form->setStateRedirect();
        }
		$parametros["opcion"]=2;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}

	public function guardarinstrumentoAction() {
	    $form = new Solicitudes_Form_InstrumentoAutoevaluacion();
	    if( $this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost()) ) {
	        try {
			    $instrumento = new Solicitudes_Model_DetalleAutoevaluacion();
			    $datos = $form->getValues();
			    $datos["codproceso"] = $this->codproceso;
			    $datos["muestrareal"] = $this->getParam("muestrareal");
	
				$instrumento->guardarInstrumentoAutoevaluacion($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
				$form->reset();
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
	    } else {
            $form->setStateRedirect();
        }
		$parametros["opcion"]=3;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function eliminarinstrumentoAction() {
		try {
		    $instrumento = new Solicitudes_Model_DetalleAutoevaluacion();
			$instrumento->eliminarInstrumento($this->_getParam("codinstrumento"));
			$this->view->priorityMessenger("El instrumento se ha eliminado", "success");
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
		}
	    $parametros["opcion"]=3;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function calcularmuestraAction() {
	    $this->_helper->layout()->disableLayout();
	    $this->_helper->viewRenderer->setNoRender(true);
	    $value = array();
	    $value["muestrasugerida"] = 80;
	    $value["totalpoblacion"] = 500;
	    $value["texto"] = "La población total es de <strong>500</strong>, la muestra sugerida para una confianza del 95% es de <strong>80</strong>";
	    echo json_encode($value);
	}
	
	public function guardarfuentesAction() {
	    $form = new Solicitudes_Form_FuentesAutoevaluacion();
	    if( $this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost()) ) {
	        $fdocumentales = $form->getValue("fuentesdocumentales");
	        $fnodocumentales = $form->getValue("fuentesnodocumentales");
	        if(empty($fdocumentales) && empty($fnodocumentales)) {
					$form->getElement("fuentesdocumentales")->addError("Una de las fuentes documentales es requerida");
					$form->getElement("fuentesnodocumentales")->addError("Una de las fuentes documentales es requerida");
					$form->setStateRedirect();
					$parametros["error"]= 2;
				} else {
					try {
					    $procesos = new Solicitudes_Model_DetalleSolicitud();
					    $datos = $form->getValues();
					    $datos["codproceso"]=$this->codproceso;
					    $procesos->guardardatosProceso($datos);
						$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
						$form->reset();
					} catch (Exception $e) {
						$this->view->priorityMessenger($e->getMessage(), "error");
					}
				}
	    } else {
            $form->setStateRedirect();
            $parametros["error"]= 2;
        }
		$parametros["opcion"]=3;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
		
	public function guardarmetodosAction() {
	    $form = new Solicitudes_Form_MetodosAutoevaluacion();
	    if ($this->tramitelista["realizarponderacion"]=="N"){
	        $form->getElement("sintesisponderacion")->setRequired(false);
	    }
	    if( $this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost()) ) {
			try {
			    $procesos = new Solicitudes_Model_DetalleSolicitud();
			    $datos = $form->getValues();
			    $datos["codproceso"]=$this->codproceso;
			    $procesos->guardardatosProceso($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
				$form->reset();
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
	    } else {
            $form->setStateRedirect();
        }
		$parametros["opcion"]=4;
		$parametros["error"]=1;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}

	public function guardarescalasAction() {
	    $form = new Solicitudes_Form_Gradacion();
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $escalasService = new Autoevaluacion_Model_Escalas();
                $escalasService->validarEscalasGradacion($form->getValues());
                $escalasService->guardarEscala($form->getValues());
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
        }
		$parametros["opcion"]=4;
		$parametros["error"]=2;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}

	public function guardarcnaescalasAction() {
	    $form = new Solicitudes_Form_Gradacion();
        try {
            $escalasService = new Autoevaluacion_Model_Escalas();
            $codlista=$this->infoLista["codlista"];
            
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE PLENAMENTE","gradononumerico"=>"A","pesoinferior"=>4.5,"pesosuperior"=>5,"porcentajeinferior"=>80,"porcentajesuperior"=>100);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE EN ALTO GRADO","gradononumerico"=>"B","pesoinferior"=>3.5,"pesosuperior"=>4.4,"porcentajeinferior"=>60,"porcentajesuperior"=>79);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE ACEPTABLEMENTE","gradononumerico"=>"C","pesoinferior"=>3,"pesosuperior"=>3.4,"porcentajeinferior"=>40,"porcentajesuperior"=>59);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"SE CUMPLE INSATISFACTORIAMENTE","gradononumerico"=>"D","pesoinferior"=>2,"pesosuperior"=>2.9,"porcentajeinferior"=>20,"porcentajesuperior"=>39);
            $datos_escala[]= array("codlista"=>$codlista,"codproceso"=>$this->codproceso,"nombre"=>"NO SE CUMPLE","gradononumerico"=>"E","pesoinferior"=>1,"pesosuperior"=>1.9,"porcentajeinferior"=>10,"porcentajesuperior"=>19);
            
            foreach($datos_escala as $key =>$datos){
                $escalasService->guardarEscala($datos);
            }
            $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
         } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
		$parametros["opcion"]=4;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function eliminarescalaAction() {
		try {
		    $escalasService = new Autoevaluacion_Model_Escalas();
			$escalasService->eliminarEscala($this->_getParam("codescala"));
			$this->view->priorityMessenger("La escala se ha eliminado", "success");
		} catch (Exception $e) {
			$this->view->priorityMessenger($e->getMessage(), "error");
		}
	    $parametros["opcion"]=4;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function guardarponderacionAction() {
    	if ($this->infoLista){
	        $AutoevaluacionService = new Autoevaluacion_Model_DiligenciarListas();
	        
	        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
	        $datos_diligencia["codproceso"]=$this->datosproceso["codproceso"];
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	        
    	    $opcion = 1;
    	    $campocodigo = $this->_getParam("campocodigo");
    	    $codseccionlista = $this->_getParam("codseccionlista");
    	    
    	    if (!empty($codseccionlista)){
    	        $datos_diligencia["codseccionlista"]=$codseccionlista;
    	        $parametros["codseccionlista"]=$codseccionlista;
    	         $opcion = 2;
    	    }
            $this->view->informacion = $AutoevaluacionService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        
	        $form = new Solicitudes_Form_Diligenciarsecciones(array("elementosSeccion"=>$this->view->informacion));
		    
		    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
		        if(!$AutoevaluacionService->validarTotalPeso($this->getRequest()->getPost())) {
					$form->getElement("totalpeso")->addError("La suma de las cantidades de pesos debe ser igual a 100%");
					if ($campocodigo==2)$parametros["codseccionlista"]=$codseccionlista;
					$form->setStateRedirect();
				} else {
		            try {
		                $datos = $this->getRequest()->getPost();
		                unset($datos["campocodigo"]);
		                unset($datos["codseccionlista"]);
		                
		                foreach($datos as $key =>$value){
		                    list($campo,$codigo) = explode("_",$key);
		                    $datos_insert[$campo] = $value;
		                    if ($campo=="justificacionpeso"){
		                        if ($campocodigo==1){
			                        $datos_insert["codtramiteseccion"] = $codigo;
			                        $AutoevaluacionService->guardarTramiteSeccion ($datos_insert);
		                        }else{
			                        $datos_insert["codtramiteelemento"] = $codigo;
			                        $datos_insert["codusuario"] = App_User::getCodigoUsuario();
			                        $AutoevaluacionService->guardarTramiteElemento($datos_insert);
			                        $parametros["codseccionlista"]=$codseccionlista;
			                     }
		                    }
	                    }
		                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
		            } catch(Exception $e) {
		                $this->view->priorityMessenger($e->getMessage(), "error");
		            }
				}
	        }else{
	            $form->setStateRedirect();
	        }
    	}
		$parametros["opcion"]=5;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function valoracionelementoAction() {
		$this->tabs->actual("Valoración de factores y características");
        if ($this->infoLista){
	        $CompletitudService = new Autoevaluacion_Model_DiligenciarListas();
	        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	        
	        $opcion = 3;
	        $secciones = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        
	        $this->view->valoracion = $secciones;
	        $this->view->completo = true;
	        $this->view->finalizar = true;
	        $this->view->datos_menu = array();
	        $elements = array();
            $baseUrl = Zend_Controller_Front::getInstance ()->getBaseUrl();
	        
	        $a = $secciones[0]["codtramiteseccion"];
	        if (!empty($secciones[0]["justificacion"]))
	            $b = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	        else
	            $b = $secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	        $this->view->datos_menu[$a] = array("nombreseccion"=>$b);
	        $this->view->datos_menu[$a]["checkelementos"]=true;
	        $this->view->datos_menu[$a]["seccioncna"]=$secciones[0]["seccioncna"];
            $completitud_seccion = true;
            
	        $codtramiteelemento = $this->_getParam("codtramiteelemento");
	        $elkey = 0;
            $check_seccion = true;
            $this->view->columnas=0;
            
	        foreach ($secciones as $key =>$datosseccion){
	            if (!isset($this->view->datos_menu[$datosseccion["codtramiteseccion"]])){
	                if (!empty($datosseccion["justificacion"])){
	                    $nombre_seccion = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
	                }else{
                        $nombre_seccion = $datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
                    }
	                $this->view->datos_menu[$datosseccion["codtramiteseccion"]] = array("nombreseccion"=>$nombre_seccion);
                    $this->view->datos_menu[$a]["elementos"]=$elements;
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=true;
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["seccioncna"]=$datosseccion["seccioncna"];
                    unset($elements);
                    $a= $datosseccion["codtramiteseccion"];
                    $check_seccion = true;
	            }
	            if (!empty($codtramiteelemento) && $codtramiteelemento==$datosseccion["codtramiteelemento"]){
	                $elkey = $key;
	            }
	            $img = "";
	            if (!empty($datosseccion["codescala"])){
	                $img = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ";
	            }else{
	                $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=false;
	                $this->view->completo = false;
	            }
                $elements[$datosseccion["codtramiteelemento"]]= $img.$datosseccion["ordenelemento"].". ".$datosseccion["nombre"];
                
                if ($datosseccion["ordenelemento"]>$this->view->columnas) $this->view->columnas=$datosseccion["ordenelemento"];
                
                if (empty($datosseccion["escala"])) $this->view->completo = false;
	        }
	        $this->view->datos_menu[$a]["elementos"]=$elements;
    	    
	        $escalasService = new Autoevaluacion_Model_Escalas();
            $escala = $escalasService->getEscalasDiligencia($this->infoLista["codlista"],$this->codproceso);
            
            $this->view->nombreseccion = "FACTOR ".$secciones[$elkey]["ordenseccion"]." : ".$secciones[$elkey]["nombreseccion"];
            
    	    $form = new Solicitudes_Form_Valoracion(array("gradosEscala"=>$escala));
    	    $form->getElement("codescala")->setLabel($secciones[$elkey]["ordenelemento"].". ".$secciones[$elkey]["nombre"]);
    	    $form->recoverFromRedirect();
    	    $form->populate($secciones[$elkey]);
    	    $form->makeStatic($this->_readonly);
    	    $this->view->form = $form;
        	    
    	    $this->view->nombre_escala = "NO HA SIDO VALORADO";
    	    if (!empty($secciones[$elkey]["codescala"])){
    	        $datos_escala = $escalasService->getEscala($secciones[$elkey]["codescala"]);
    	        $this->view->nombre_escala = $datos_escala["nombre"];
    	    }
    	}
	}
	
	public function guardarvaloracionelementoAction(){
        $escalasService = new Autoevaluacion_Model_Escalas();
        $escala = $escalasService->getEscalasDiligencia($this->infoLista["codlista"],$this->codproceso);
        
        
//        $datos = $this->getRequest()->getPost();
//        Zend_Debug::dump($datos);
//        exit();
        
        $form = new Solicitudes_Form_Valoracion(array("gradosEscala"=>$escala));
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
	        if(!$escalasService->validargrado($this->_getParam("codescala"),$this->_getParam("valoracion"))) {
			    $form->getElement("valoracion")->addError("El grado de cumplimiento debe estar dentro de los rangos establecidos en la escala");
				$form->setStateRedirect();
			} else {
	            try {
	                $valoracionService = new Autoevaluacion_Model_DiligenciarListas();
	                $datos = $this->getRequest()->getPost();
	                unset($datos["codtramiteseccion"]);
	                
	                $datos["codusuario"] = App_User::getCodigoUsuario();
	                $valoracionService->guardarTramiteElemento($datos);
	                $valoracionService->actualizarValoracionSeccion($datos["codtramiteelemento"],$this->_getParam("codtramiteseccion"),$this->infoLista["codlista"],$this->tramitelista["realizarponderacion"]);
	                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
	            } catch(Exception $e) {
	                $this->view->priorityMessenger($e->getMessage(), "error");
	            }
		    }
        }else{
            $form->setStateRedirect();
        }
		$parametros["codtramiteelemento"]=$this->_getParam("codtramiteelemento");
		$this->_helper->redirector("valoracionelemento", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}

	public function valoracionseccionAction() {
		$this->tabs->actual("Valoración de factores y características");
        if ($this->infoLista){
	        $CompletitudService = new Autoevaluacion_Model_DiligenciarListas();
	                
	        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	        
	        $opcion = 3;
	        $secciones = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        
	        $this->view->valoracion = $secciones;
	        $this->view->completo = true;
            
	        $this->view->resumen_seccion = array();
	        $this->view->columnas=0;
	        
	        $this->view->datos_menu = array();
	        $elements = array();
            $baseUrl = Zend_Controller_Front::getInstance ()->getBaseUrl();
	        
	        $a = $secciones[0]["codtramiteseccion"];
	        if (!empty($secciones[0]["justificacion"]))
	            $b = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	        else
	            $b = $secciones[0]["ordenseccion"].". ".$secciones[0]["nombreseccion"];
	            
	        $this->view->datos_menu[$a] = array("nombreseccion"=>$b);
	        $this->view->datos_menu[$a]["checkelementos"]=true;
            $this->view->datos_menu[$a]["seccioncna"]=$secciones[0]["seccioncna"];
            
	        $codtramiteseccion = $this->_getParam("codtramiteseccion");
	        $elkey = 0;
            $check_seccion = true;
            
	        foreach ($secciones as $key =>$datosseccion){
	            if (!isset($this->view->datos_menu[$datosseccion["codtramiteseccion"]])){
	                if (!empty($datosseccion["justificacion"]))
	                    $nombre_seccion = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ".$datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
                    else
                        $nombre_seccion = $datosseccion["ordenseccion"].". ".$datosseccion["nombreseccion"];
                        	                
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]] = array("nombreseccion"=>$nombre_seccion);
                    $this->view->datos_menu[$a]["elementos"]=$elements;
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=true;
                    $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["seccioncna"]=$datosseccion["seccioncna"];
                    unset($elements);
                    $a= $datosseccion["codtramiteseccion"];
                    $check_seccion = true;
	            }
	            if (!empty($codtramiteseccion) && $codtramiteseccion==$datosseccion["codtramiteseccion"]){
	                $elkey = $key;
	            }
	            $img = "";
	            if (!empty($datosseccion["codescala"])){
	                $img = "<img src=\"{$baseUrl}/img/success.png\"  align=\"absmiddle\" /> ";
	            }else{
	                $this->view->datos_menu[$datosseccion["codtramiteseccion"]]["checkelementos"]=false;
                    $this->view->completo = false;
	            }
	            $elements[$datosseccion["codtramiteelemento"]]= $img.$datosseccion["ordenelemento"].". ".$datosseccion["nombre"];
                
                if ($codtramiteseccion==$datosseccion["codtramiteseccion"]){
                    $this->view->resumen_seccion[]= $datosseccion;
                }
                
                if ($datosseccion["ordenelemento"]>$this->view->columnas) $this->view->columnas=$datosseccion["ordenelemento"];
                if (empty($datosseccion["escala"])) $this->view->completo = false;
	        }
	        $this->view->datos_menu[$a]["elementos"]=$elements;
    	    
            $this->view->nombreseccion = "FACTOR ".$secciones[$elkey]["ordenseccion"]." : ".$secciones[$elkey]["nombreseccion"];
            
            $datos_form["codtramiteseccion"] = $secciones[$elkey]["codtramiteseccion"];
            $datos_form["codescala"] = $secciones[$elkey]["escala"];
            $datos_form["txtescala"] = $secciones[$elkey]["escalas"];
            $datos_form["valoracion"] = $secciones[$elkey]["val"];
            $datos_form["justificacionvaloracion"] = $secciones[$elkey]["justificacion"];

            $datos_form["txtvaloracion"] =  number_format($secciones[$elkey]["val"],1);
            
    	    $form = new Solicitudes_Form_ValoracionSeccion();
    	    $form->getElement("txtescala")->setLabel("FACTOR ".$secciones[$elkey]["ordenseccion"].". ".$secciones[$elkey]["nombreseccion"]);
    	    $form->recoverFromRedirect();
    	    $form->populate($datos_form);
    	    $form->makeStatic($this->_readonly);
    	    $this->view->form = $form;
                    	 
//    	    $this->view->nombre_escala = "NO HA SIDO VALORADO";
//    	    if (!empty($secciones[$elkey]["codescala"])){
//    	        $datos_escala = $escalasService->getEscala($secciones[$elkey]["codescala"]);
//    	        $this->view->nombre_escala = $datos_escala["nombre"];
//    	    }
    	}
	}
	
	public function guardarvaloracionseccionAction(){
        $escalasService = new Autoevaluacion_Model_Escalas();
        $escala = $escalasService->getEscalasDiligencia($this->infoLista["codlista"],$this->codproceso);
        
        $form = new Solicitudes_Form_ValoracionSeccion(array("gradosEscala"=>$escala));
		    
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
//	        if(!$escalasService->validargrado($this->_getParam("codescala"),$this->_getParam("valoracion"))) {
//			    $form->getElement("valoracion")->addError("El grado de cumplimiento debe estar dentro de los rangos establecidos en la escala");
//				$form->setStateRedirect();
//			} else {
	            try {
	                $valoracionService = new Autoevaluacion_Model_DiligenciarListas();
	                $datos = $this->getRequest()->getPost();
	                unset($datos["codtramiteelemento"]);
	                $datos["codusuario"] = App_User::getCodigoUsuario();
	                $valoracionService->guardarTramiteSeccion($datos);
	                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
	            } catch(Exception $e) {
	                $this->view->priorityMessenger($e->getMessage(), "error");
	                echo $e->getMessage();
	            }
//		    }
        }else{
            $form->setStateRedirect();
        }
		$parametros["codtramiteseccion"]=$this->_getParam("codtramiteseccion");
		$this->_helper->redirector("valoracionseccion", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
	public function valoracionglobalAction() {
		$this->tabs->actual("Valoración de factores y características");

        if ($this->infoLista){
	        $CompletitudService = new Autoevaluacion_Model_DiligenciarListas();
	                
	        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	        
	        $opcion = 3;
	        $secciones = $CompletitudService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        $this->view->valoracion = $secciones;
	        $datos_form["codtramitelista"]= $secciones[0]["codtramitelista"];
	        $this->view->juicioglobal = $CompletitudService->actualizarValoracionGlobal($secciones[0]["codtramitelista"],$this->infoLista["codlista"]);
	        $this->view->datos_adjunto = $CompletitudService->getAdjuntosTramite($secciones[0]["codtramitelista"]);
	        
        }
        
        $form = new Solicitudes_Form_DocumentoTramiteLista();
        $this->view->form = $form;
        $form->recoverFromRedirect();
         $form->makeStatic($this->_readonly);
    	$form->populate($this->tramitelista);
	}
	
	public function guardarvaloracionglobalAction(){
        $form = new Solicitudes_Form_DocumentoTramiteLista();
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $valoracionService = new Autoevaluacion_Model_DiligenciarListas();
                $valoracionService->guardarTramiteLista($this->getRequest()->getPost());
                
//                    $datos_adj = $form->archivo->getFileInfo();
//				    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
//				    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
//                    $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
//
//				    if ($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
//					    $SintesisTable = new Solicitudes_Model_DetalleSolicitud();
//				         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
//				         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
//				         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
//				         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
//				         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
//						 $datos_archivo["codtramitelista"]  = $this->_getParam("codtramitelista");
//						 $datos_archivo["nombre"]  = $this->_getParam("nombre");
//						 $datos_archivo["descripcion"]  = $this->_getParam("descripcion");
//
//						 $valoracionService->guardarAdjuntoTramite($datos_archivo);
//				    }
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
        }
		$this->_helper->redirector("valoracionglobal");
	}
	
    public function eliminaradjuntotramiteAction(){
  	      try {
			  $valoracionService = new Autoevaluacion_Model_DiligenciarListas();
			  $valoracionService->eliminarAdjuntoTramite($this->_getParam("coddocumento"));
			  $this->view->priorityMessenger("El archivo se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $this->_helper->redirector("valoracionglobal");
	}

	public function planmejoramientoAction() {
		$this->tabs->actual("Plan de mejoramiento");
		$valoracionService = new Autoevaluacion_Model_DiligenciarListas();
		$Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();

		$form = new Planesmejoramiento_Form_Crearplan();
		$accion = $this->_getParam("accion");
		if (empty($accion)){
	        $form->recoverFromRedirect();
		}
		
    	 $this->view->codplanmejoramiento = "";
		if (isset($this->datos_plan[0]["codplanmejoramiento"])){
		    $datos_form = $this->datos_plan[0];
		    $this->view->codplanmejoramiento = $this->datos_plan[0]["codplanmejoramiento"];
		}else{
            $datos_form["codproceso"] = $this->codproceso;
		}
    	$form->populate($datos_form);
    	$form->makeStatic($this->_readonly);
	    $this->view->form = $form;
	    
        $this->view->mostrarform = false;
        if($accion == "crear" || $accion == "modificar") {
	        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
	        $datos_diligencia["codproceso"]=$this->codproceso;
	        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
            
	        $opcion = 1;
	        $secciones = $valoracionService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
	        $array_factores = $valoracionService->getArrayFactores($secciones);
	        
	        $form2 = new Planesmejoramiento_Form_Actividadesplanauto(array("factores"=>$array_factores));
	        $form2->recoverFromRedirect();
	        $codactividad = $this->_getParam("codactividad");
	        if(!empty($codactividad))
                $form2->populate($Planesmejoramiento->getActividadPlan($codactividad));
            $form2->makeStatic($this->_readonly);
            $this->view->form2 = $form2;
	        $this->view->mostrarform = true;
	        
        }
        
	    $this->view->datos_actividades = array();
	    if (isset($this->datos_plan[0]["codplanmejoramiento"])){
            $this->view->datos_actividades =$Planesmejoramiento->getActividadesPlan($this->datos_plan[0]["codplanmejoramiento"]);
	    }
	}
	
	
    public function guardarplanAction(){
         $form = new Planesmejoramiento_Form_Crearplan();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
				$datos = $this->getRequest()->getPost();
				$datos["tipoplan"] = 1;
				$key = $Planesmejoramiento->guardarPlan($datos);
				if (empty($datos["codplanmejoramiento"])){
				    $datos["codplanmejoramiento"] = $key;
				}
				
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
        }
        $cadena = "";
        
        if (!empty($datos["codplanmejoramiento"])){
            $parametros["codplanmejoramiento"] = $datos["codplanmejoramiento"];
            $cadena =App_Util_SafeUrl::encriptar($parametros, false);
            $this->_helper->redirector( "planmejoramiento","detalleautoevaluacion","autoevaluacion",$cadena);
        }
         $this->_helper->redirector( "planmejoramiento","detalleautoevaluacion","solicitudes");
	}
		
	public function guardaractividadplanAction(){
        $valoracionService = new Autoevaluacion_Model_DiligenciarListas();
        $datos_diligencia["codlista"]= $this->infoLista["codlista"];
        $datos_diligencia["codproceso"]=$this->codproceso;
        $datos_diligencia["codusuario"]=App_User::getCodigoUsuario();
	    $opcion = 1;
        $secciones = $valoracionService->getDiligenciaTramiteLista($datos_diligencia,$opcion);
        $array_factores = $valoracionService->getArrayFactores($secciones);
        $form = new Planesmejoramiento_Form_Actividadesplanauto(array("factores"=>$array_factores));
        $parametros = array();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
                $datos = $this->getRequest()->getPost();
                $datos["codplanmejoramiento"] = $this->datos_plan[0]["codplanmejoramiento"];
                $codactividad = $Planesmejoramiento->guardarActividadPlan($datos);
                
                $datos_adj = $form->archivo->getFileInfo();
                
			    $ext = pathinfo( $datos_adj["archivo"]["name"], PATHINFO_EXTENSION );
			    $nuevo_nombre = md5( uniqid().$datos_adj["archivo"]["name"]).".".$ext;
                $form->archivo->addFilter('Rename', array('target'=>$form->archivo->getDestination(). "/{$nuevo_nombre}" ));
			    
			    if ($form->archivo->receive() && !empty($datos_adj["archivo"]["name"])) {
			         $datos_archivo["nombrereal"]   = $datos_adj["archivo"]["name"];
			         $datos_archivo["tipomime"]     = $datos_adj["archivo"]["type"];
			         $datos_archivo["tamano"]       = $datos_adj["archivo"]["size"];
			         $datos_archivo["nombrecodificado"] = $nuevo_nombre;
			         $datos_archivo["codusuario"]   = App_User::getCodigoUsuario();
					 $datos_archivo["codactividad"]  = (isset($datos["codactividad"]) && !empty($datos["codactividad"]))?$datos["codactividad"]:$codactividad;

			         if (isset($datos["codactividad"]) && !empty($datos["codactividad"])){
                         $codactividad = $datos["codactividad"];
                         $datos_adjuntos = $Planesmejoramiento->getAdjuntosActividad($codactividad);
                         if (count($datos_adjuntos)>0){
                             $Planesmejoramiento->eliminarAdjuntoActividad($datos_adjuntos[0]["coddocumento"]);
                         }
                     }
                     
					 $Planesmejoramiento->guardarAdjuntoActividad($datos_archivo);
			    }
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
            $parametros["accion"]="editar";
            $accion = $this->_getParam("codactividad");
            if (empty($accion)) $parametros["accion"]="crear";
        }
        $this->_helper->redirector("planmejoramiento", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}

    public function eliminaractividadAction(){
  	      try {
			   $Planesmejoramiento = new Planesmejoramiento_Model_Planesmejoramiento();
			  
             $codactividad = $this->_getParam("codactividad");
             $datos_adjuntos = $Planesmejoramiento->getAdjuntosActividad($codactividad);
             if (count($datos_adjuntos)>0){
                 $Planesmejoramiento->eliminarAdjuntoActividad($datos_adjuntos[0]["coddocumento"]);
             }
			  
			  $Planesmejoramiento->eliminarActividadPlan($this->_getParam("codactividad"));
			  $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
		  $this->_helper->redirector("planmejoramiento");
	}
	
   public function finalizarautoevaluacionAction() {
        try {
            $historico = new Solicitudes_Model_Historicoprocesos();
            $historico->guardarEstadoProceso($this->datosproceso["codproceso"], Solicitudes_Model_Historicoprocesos::COMPLETITUD_AUTOEVALUACION);
            $this->view->priorityMessenger("El proceso de autoevaluación finalizó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $this->_helper->redirector("lista","index");
    }
	
	
   public function verwordautoevaluacionAction() {
        $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
        $codlista = "";
        if ($this->infoLista){
            $codlista = $this->infoLista["codlista"];
        }
        $html = $autoevaluacion->descargarWord($this->codproceso,App_User::getCodigoUsuario(),$codlista);
//        exit();
		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender(true);
		$this->getResponse()->clearBody();
		$this->getResponse()->clearAllHeaders();
	    header("Content-type: application/msword");
        header("Content-Disposition: attachment; filename=autoevaluacion.doc" );
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
        header("Pragma: public");
        print $html;
    }
    
    public function docentesAction() {
        $this->_helper->layout()->disableLayout();
	    $accion = $this->_getParam("accion");
	    $codseccionlista = $this->_getParam("codseccionlista");
	                    
        
        $errordocentes = $this->_getParam("errordocentes");
        $tipodocente = $this->_getParam("tipodocente");
        $tipodocente = (empty($tipodocente))?"IN":$tipodocente;
        
        $ServiceProceso  = new Solicitudes_Model_DetalleSolicitud();
        $coddocentevisita = $this->_getParam("coddocentevisita");
        if (!empty($coddocentevisita)){
            $datos= $ServiceProceso->buscarDocenteVisita($coddocentevisita);
            
        }
        
        $datos["tipodocente"] = $tipodocente;
        $datos["codproceso"] = $this->codproceso;
        $datos["codestado"] = $this->codestado;
        
        
        $tabs = new App_Util_Tabs ();
        $tabs->agregar_vista ( "Datos generales","#" );
        $tabs->actual("Datos generales");
        
        if ($tipodocente=="IN"){
            $form = new Solicitudes_Form_DocentesAutoevalucion();
            if (!empty($coddocentevisita)){
                $param = App_Util_SafeUrl::encriptar(array("coddocentevisita"=>$coddocentevisita), true);
                $tabs->agregar_vista ( "Publicaciones","/solicitudes/detalleautoevaluacion/publicaciondocente/{$param}");
            }else{
                $tabs->agregar_vista ( "Publicaciones","#" );
            }
            $form->populate($datos);
        }else{
		    $autoCompleteUbicacion = new App_Util_AutoCompletar("/generales/ubicacion/autolistapaises","ubicacion");
		    $this->view->autoCompleteUbicacion = $autoCompleteUbicacion;
            $form = new Solicitudes_Form_DocentesInvAutoevalucion();
        	
            $ubicacion= new Generales_Model_Ubicaciongeografica();
			if (!empty($datos["codubicacion"])){
			    $datosubicacion= $ubicacion->cargarDatos($datos["codubicacion"]);
			    $datos["ubicacion"]=$datosubicacion["ubicacion"];
			}
			$form->populate($datos);
			
			if (!empty($datos["fechaestadia"])){
		        $fechaestadia = new Zend_Date($datos["fechaestadia"]);
				$appConfig = Zend_Registry::get( "appConfig" );
				$form->getElement("fechaestadia")->setValue($fechaestadia->toString($appConfig->fecha_formato_mostrar));
			}
        }
        
        $form->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardardocente"));
        
        if ($errordocentes){
            $form->recoverFromRedirect();
        }
        
		$this->view->form = $form;
        $this->view->tabs = $tabs;
        
        $this->_helper->layout()->setLayout("popup");
    }
    
   public function guardardocenteAction() {
        $parametros = array();
        
        $parametros["tipodocente"]= $this->_getParam("tipodocente");
        if ($parametros["tipodocente"]=="IN"){
            $form = new Solicitudes_Form_DocentesAutoevalucion();
        }else{
            $form = new Solicitudes_Form_DocentesInvAutoevalucion();
        }
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
        
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                $datos["codproceso"] = $this->codproceso;
                $datos["codestado"] = $this->codestado;
                $key = $detalleSolicitud->guardarDocentesVisita($datos);
                
                if ($key){
                	$datos["coddocentevisita"] = $key;
                }
                $parametros["coddocentevisita"] = $datos["coddocentevisita"];
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            $parametros["errordocentes"]=true;
        }
        $this->_helper->redirector("docentes", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
     
   public function eliminardocenteAction() {
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
            $detalleSolicitud->eliminarDocentesVisita($this->_getParam("coddocentevisita"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }

    public function publicaciondocenteAction() {
	    $codpublicacion = $this->_getParam("codpublicacion");
        $coddocentevisita = $this->_getParam("coddocentevisita");
        
        $this->_helper->layout()->disableLayout();
        
        $ServiceProceso  = new Solicitudes_Model_DetalleSolicitud();
        
        if (!empty($codpublicacion)){
            $datos= $ServiceProceso->buscarPublicacionDocente($codpublicacion);
        }else{
            $datos["coddocentevisita"]=$coddocentevisita;
        }
        
        $tabs = new App_Util_Tabs ();
        $parametros = App_Util_SafeUrl::encriptar(array("coddocentevisita"=>$coddocentevisita), true);
        $tabs->agregar_vista ( "Datos generales","/solicitudes/detalleautoevaluacion/docentes/{$parametros}" );
        $tabs->agregar_vista ( "Publicaciones","/solicitudes/detalleautoevaluacion/publicacionesdocente/{$parametros}" );
        $tabs->actual("Publicaciones");
        
        $form = new Solicitudes_Form_PublicacionDocente();
        $form->recoverFromRedirect();
        $form->populate($datos);
        
        if (isset($datos["fecha"])){
	        $fecha = new Zend_Date($datos["fecha"]);
			$appConfig = Zend_Registry::get( "appConfig" );
			$form->getElement("fecha")->setValue($fecha->toString($appConfig->fecha_formato_mostrar));
        }
        
        $form->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardarpublicaciondocente"));
        
		$this->view->form = $form;
        $this->view->tabs = $tabs;
        $this->view->publicaciones = $ServiceProceso->buscarPublicacionesDocente($coddocentevisita);
        
        $this->_helper->layout()->setLayout("popup");
    }
    
   public function guardarpublicaciondocenteAction() {
        $form = new Solicitudes_Form_PublicacionDocente();

        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();

        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                $datos["codproceso"] = $this->codproceso;
                $detalleSolicitud->guardarPublicacionDocente($datos);
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $parametros = array("coddocentevisita"=>$this->_getParam("coddocentevisita"));
        $this->_helper->redirector("publicaciondocente", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }

   public function eliminarpublicaciondocenteAction() {
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
            $detalleSolicitud->eliminarPublicacionDocente($this->_getParam("codpublicacion"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $parametros["coddocentevisita"] = $this->_getParam("coddocentevisita");
        $this->_helper->redirector("publicaciondocente", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
    
    public function guardarestudiantesAction() {
        $form = new Solicitudes_Form_Estudiantesauto();
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
//        $coddocentevisita = $this->_getParam("coddocentevisita");
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $detalleSolicitud->eliminarEstudiantes($this->codproceso,$this->codestado);
                $datos = $this->getRequest()->getPost();

                $datos_insert["codproceso"] = $this->codproceso;
                $datos_insert["codestado"] = $this->codestado;

                $datos = $detalleSolicitud->CrearAnosPeriodos($datos);

                foreach($datos as $key =>$value){
                    if (substr($key,0,8)=="cantidad"){
	                    list($campo,$numeroano,$periodo,$tipoestudiante) = explode("_",$key);
	                    $datos_insert[$campo] = $value;
	                    $datos_insert["numeroano"] = $numeroano;
	                    $datos_insert["ano"] = $datos["ano_{$numeroano}_{$periodo}"];
	                    $datos_insert["periodo"] = $datos["periodo_{$numeroano}_{$periodo}"];
	                    $datos_insert["tipoestudiante"] = $tipoestudiante;
                        $detalleSolicitud->guardarEstudiantes($datos_insert);
                    }
                }
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            $this->parametros["errorestudiantes"]=true;
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
    
    public function guardardocentesAction() {
        $form = new Solicitudes_Form_Docentes();
        $detalleSolicitud = new Solicitudes_Model_DetalleSolicitud();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
//                $error = false;
//
//	            	$ano = $form->getValue("ano");
//		        	if($ano < 1900) {
//						$form->getElement("ano")->addError("El año debe ser un valor mayor de 1900");
//					    $error = true;
//			        }
//
//                if ($error){
//                    $form->setStateRedirect();
//                    $this->parametros["errordocentes"]=true;
//                }else{
	                $detalleSolicitud->eliminarDocentes($this->codproceso,$this->codestado);
	                $datos = $this->getRequest()->getPost();
	                unset($datos["codtab"]);
	                unset($datos["codboton"]);
	                unset($datos["codboton2"]);
	                unset($datos["btnSubmit"]);
	                
	                $datos_insert["codproceso"] = $this->codproceso;
	                $datos_insert["codestado"] = $this->codestado;
	                
	                $datos = $detalleSolicitud->CrearAnosPeriodos($datos);
	                
	                foreach($datos as $key =>$value){
	                    if (substr($key,0,8)=="cantidad"){
		                    list($campo,$numeroano,$periodo,$tipodedicacion,$tiponivel) = explode("_",$key);
		                    $datos_insert[$campo] = $value;
		                    $datos_insert["numeroano"] = $numeroano;
		                    $datos_insert["ano"] = $datos["ano_{$numeroano}_{$periodo}"];
		                    $datos_insert["periodo"] = $datos["periodo_{$numeroano}_{$periodo}"];
		                    $datos_insert["tipodedicacion"] = $tipodedicacion;
		                    $datos_insert["tiponivel"] = $tiponivel;
	                        $detalleSolicitud->guardarDocentes($datos_insert);
	                    }
	                }
	                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
//                }
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
            $this->parametros["errordocentes"]=true;
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
    
	public function guardarrealizarponderacionAction(){
        $form = new Solicitudes_Form_Realizarponderacion();
	    if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $valoracionService = new Autoevaluacion_Model_DiligenciarListas();
                $valoracionService->guardarTramiteLista($this->getRequest()->getPost());
                $valoracionService->resetearValoracion($this->tramitelista["codtramitelista"]);
                $this->view->priorityMessenger("Los datos se han guardado correctamente.", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        }else{
            $form->setStateRedirect();
        }
		$parametros["opcion"]=4;
		$this->_helper->redirector("metodologia", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
    
	
   public function descargarexcelAction() {
       $Proceso = new Solicitudes_Model_DetalleSolicitud();
       $opcion = $this->_getParam("opcion");
       
       switch($opcion){
           case "1":
       
               $datos_docentes = $Proceso->buscarDocentes($this->codproceso,$this->codestado);
               if ($datos_docentes){
                   $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
                   $datos_docentes["periodo"]= $datos_docentes["periodo_1_1"];


	               if ($datos_docentes["ano_1_1"]==$datos_docentes["ano_1_2"]){
		               $datos_docentes["ano"]= $datos_docentes["ano_1_1"];
		               $datos_docentes["periodo"]= $datos_docentes["periodo_1_2"];
	               }
               }
               $datos_docentes["codtab"] = $this->datos["codtab"];
	           $datos_docentes["codboton"] = $this->datos["codboton"];
			   $datos_docentes["codboton2"] = $this->datos["codboton2"];
			   $html = $Proceso->armarhtmldocentes($datos_docentes);
			   $titulo = "Docentes";
		  break;
           case "2":
               $datos_docentesin = $Proceso->buscarDocentesVisita($this->codproceso,$this->codestado,"IN");
			   $html = $Proceso->armarhtmldocentescontratacion($datos_docentesin);
			   $titulo = "Docentes";
		  break;
       }

		$this->_helper->layout->disableLayout();
		$this->_helper->viewRenderer->setNoRender(true);
		$this->getResponse()->clearBody();
		$this->getResponse()->clearAllHeaders();
	    header("Content-type: application/msword");
        header("Content-Disposition: attachment; filename={$titulo}.xls" );
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
        header("Pragma: public");
        print $html;
    }
    
    
	public function guardarextensionactividadesAction(){
        $form = new Solicitudes_Form_Extensionactividades();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
				$datos = $this->getRequest()->getPost();
				$autoevaluacion->guardar_extensionactividades($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
//            foreach ($form->getMessages() as $key => $value) {
//            	$this->view->priorityMessenger("{$form->getElement($key)->getLabel()} ".array_shift($value), "error");
//            }
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $parametros["tab1"] = 1;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }

     public function eliminarextensionactividadesAction(){
  	      try {
			  $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
			  $autoevaluacion->eliminarActividadextension($this->_getParam("codactextension"));
			  $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $parametros["tab1"] = 1;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
    
	public function guardarextensionfinanciacionAction(){
        $form = new Solicitudes_Form_Extensionfinanciacion();
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())){
			try {
				$autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
				$datos = $this->getRequest()->getPost();
				$autoevaluacion->guardarExtensionfinanciacion($datos);
				$this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
			} catch (Exception $e) {
				$this->view->priorityMessenger($e->getMessage(), "error");
			}
        } else {
            $form->setStateRedirect();
//            foreach ($form->getMessages() as $key => $value) {
//            	$this->view->priorityMessenger("{$form->getElement($key)->getLabel()} ".array_shift($value), "error");
//            }
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $parametros["tab1"] = 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }

     public function eliminarextensionfinanciacionAction(){
  	      try {
			  $autoevaluacion = new Solicitudes_Model_DetalleAutoevaluacion();
			  $autoevaluacion->eliminarFinanciacionextension($this->_getParam("codfinextension"));
			  $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
          } catch (Exception $e) {
			  $this->view->priorityMessenger($e->getMessage(), "error");
		  }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $parametros["tab1"] = 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
	}
	
   public function gruposinvestigacionAction() {
        $this->_helper->layout()->disableLayout();

        $codseccionlista = $this->_getParam("codseccionlista");
        $ServiceProceso  = new Solicitudes_Model_DetalleAutoevaluacion();
        $codgrupo = $this->_getParam("codgrupo");
        if (!empty($codgrupo)){
            $datos= $ServiceProceso->getGrupoinvestigacion($codgrupo);
            
        }
        
        $datos["codproceso"] = $this->codproceso;
        $form = new Solicitudes_Form_Gruposinvestigacion();
		$form->populate($datos);
			
        
        $form->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardargrupo"));
        
        $form->recoverFromRedirect();
        
		$this->view->form = $form;
        
        $this->_helper->layout()->setLayout("popup");
    }
    
   public function guardargrupoAction() {
        $form = new Solicitudes_Form_Gruposinvestigacion();
        $detalleSolicitud = new Solicitudes_Model_DetalleAutoevaluacion();
        $parametros = array();
        
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                $key = $detalleSolicitud->guardarGrupoinvestigacion($datos);
                
                if ($key){
                	$datos["codgrupo"] = $key;
                }
                $parametros["codgrupo"] = $datos["codgrupo"];
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $this->_helper->redirector("gruposinvestigacion", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
     
   public function eliminargrupoAction() {
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleAutoevaluacion();
            $detalleSolicitud->eliminarGrupoinvestigacion($this->_getParam("codgrupo"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab2"] = 1;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }

   public function proyectosgrupoAction() {
        $this->_helper->layout()->disableLayout();

        $codseccionlista = $this->_getParam("codseccionlista");
        $ServiceProceso  = new Solicitudes_Model_DetalleAutoevaluacion();
        $codproyecto = $this->_getParam("codproyecto");
        if (!empty($codproyecto)){
            $datos= $ServiceProceso->getProyectogrupoinvestigacion($codproyecto);
            
        }
        
        $datos["codproceso"] = $this->codproceso;
        
        $array_gruposinvestigacion =  $ServiceProceso->getArraygruposinvestigacion($this->codproceso);
        $form = new Solicitudes_Form_Proyectogrupoinvestigacion(array("gruposinvestigacion"=>$array_gruposinvestigacion));
		$form->populate($datos);
		
   			if (!empty($datos["fechaejecucion"])){
		        $fechaestadia = new Zend_Date($datos["fechaejecucion"]);
				$appConfig = Zend_Registry::get( "appConfig" );
				$form->getElement("fechaejecucion")->setValue($fechaestadia->toString($appConfig->fecha_formato_mostrar));
			}
			
        
        $form->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardarproyectogrupo"));
        
        $form->recoverFromRedirect();
        
		$this->view->form = $form;
        
        $this->_helper->layout()->setLayout("popup");
    }
    
   public function guardarproyectogrupoAction() {
       $detalleSolicitud = new Solicitudes_Model_DetalleAutoevaluacion();
        $array_gruposinvestigacion =  $detalleSolicitud->getArraygruposinvestigacion($this->codproceso);
        $form = new Solicitudes_Form_Proyectogrupoinvestigacion(array("gruposinvestigacion"=>$array_gruposinvestigacion));
        
        
        $parametros = array();
        
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                $key = $detalleSolicitud->guardarProyectogrupoinvestigacion($datos);
                
                if ($key){
                	$datos["codproyecto"] = $key;
                }
                $parametros["codproyecto"] = $datos["codproyecto"];
                
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();
        }
        $this->_helper->redirector("proyectosgrupo", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
     
   public function eliminarproyectogrupoAction() {
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleAutoevaluacion();
            $detalleSolicitud->eliminarProyectogrupoinvestigacion($this->_getParam("codproyecto"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $parametros["tab2"] = 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }


   public function publicacionproyectoAction() {
        $this->_helper->layout()->disableLayout();

        $codseccionlista = $this->_getParam("codseccionlista");
        $codproyecto = $this->_getParam("codproyecto");
        $codpublicacion = $this->_getParam("codpublicacion");
        
        $ServiceProceso  = new Solicitudes_Model_DetalleAutoevaluacion();

        if (!empty($codpublicacion)){
            $datos= $ServiceProceso->getPublicacionproyecto($codpublicacion);
            
        }
        
        $datos["codproyecto"] = $codproyecto;
        $datos["codseccionlista"] = $codseccionlista;
        
        $form = new Solicitudes_Form_Publicacionproyecto();
		$form->populate($datos);
        
        $form->setAction($this->view->baseUrl("/solicitudes/detalleautoevaluacion/guardarpublicacionproyecto"));
        
        $form->recoverFromRedirect();
        
		$this->view->form = $form;
        
        $this->_helper->layout()->setLayout("popup");
    }
	
   public function guardarpublicacionproyectoAction() {
       $detalleSolicitud = new Solicitudes_Model_DetalleAutoevaluacion();
       $form = new Solicitudes_Form_Publicacionproyecto();
        
        if($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {
            try {
                $datos = $this->getRequest()->getPost();
                $key = $detalleSolicitud->guardarPublicacionproyecto($datos);
                $this->view->priorityMessenger("Los datos se han guardado correctamente", "success");
            } catch(Exception $e) {
                $this->view->priorityMessenger($e->getMessage(), "error");
            }
        } else {
            $form->setStateRedirect();

        }
            $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
            $parametros["codproyecto"] = $this->_getParam("codproyecto");
            $this->_helper->redirector("publicacionproyecto", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
     
   public function eliminarpublicacionproyectoAction() {
        try {
            $detalleSolicitud = new Solicitudes_Model_DetalleAutoevaluacion();
            $detalleSolicitud->eliminarPublicacionproyecto($this->_getParam("codpublicacion"));
            $this->view->priorityMessenger("El registro se eliminó correctamente", "success");
        } catch(Exception $e) {
            $this->view->priorityMessenger($e->getMessage(), "error");
        }
        $parametros["codseccionlista"] = $this->_getParam("codseccionlista");
        $parametros["tab"] = 2;
        $parametros["tab2"] = 2;
        $this->_helper->redirector("index", null, null, App_Util_SafeUrl::encriptar($parametros, false));
    }
    
}//fin de la clase
